[INFO] cloning repository https://github.com/hanMaster/wa-bot
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hanMaster/wa-bot" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FhanMaster%2Fwa-bot", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FhanMaster%2Fwa-bot'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8c2336f0d389db3ac656ca277c4794c13e8191dc
[INFO] fixing hanMaster/wa-bot against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FhanMaster%2Fwa-bot" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hanMaster/wa-bot
[INFO] finished tweaking git repo https://github.com/hanMaster/wa-bot
[INFO] tweaked toml for git repo https://github.com/hanMaster/wa-bot written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hanMaster/wa-bot on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hanMaster/wa-bot already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded jiff-static v0.2.5
[INFO] [stderr]   Downloaded env_logger v0.11.7
[INFO] [stderr]   Downloaded jiff v0.2.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4c186c50685c9936d4195afab7a84d57fc211b4a7755c231141d5726baa203f9
[INFO] running `Command { std: "docker" "start" "4c186c50685c9936d4195afab7a84d57fc211b4a7755c231141d5726baa203f9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4c186c50685c9936d4195afab7a84d57fc211b4a7755c231141d5726baa203f9" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4c186c50685c9936d4195afab7a84d57fc211b4a7755c231141d5726baa203f9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4c186c50685c9936d4195afab7a84d57fc211b4a7755c231141d5726baa203f9" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]    Compiling openssl-sys v0.9.106
[INFO] [stderr]     Checking smallvec v1.14.0
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]     Checking socket2 v0.5.8
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]    Compiling openssl v0.10.71
[INFO] [stderr]     Checking anstream v0.6.18
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking env_filter v0.1.3
[INFO] [stderr]     Checking jiff v0.2.5
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking env_logger v0.11.7
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]     Checking tokio v1.44.1
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.7.5
[INFO] [stderr]     Checking zerovec v0.10.4
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]     Checking icu_collections v1.5.0
[INFO] [stderr]     Checking icu_locid v1.5.0
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking icu_provider v1.5.0
[INFO] [stderr]     Checking icu_locid_transform v1.5.0
[INFO] [stderr]     Checking icu_properties v1.5.1
[INFO] [stderr]     Checking tokio-util v0.7.14
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking h2 v0.4.8
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking icu_normalizer v1.5.0
[INFO] [stderr]     Checking idna_adapter v1.2.0
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]     Checking hyper-util v0.1.10
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.15
[INFO] [stderr]     Checking wa-bot v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/message_processor.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 |     handlers: Vec<Box<dyn MessageHandler>>,
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/message_processor.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 |     handlers: Vec<Box<dyn MessageHandler>>,
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/message_processor.rs:35:24
[INFO] [stdout]    |
[INFO] [stdout] 35 |         for handler in &self.handlers {
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/message_processor.rs:35:24
[INFO] [stdout]    |
[INFO] [stdout] 35 |         for handler in &self.handlers {
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/message_processor.rs:35:24
[INFO] [stdout]    |
[INFO] [stdout] 35 |         for handler in &self.handlers {
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/message_processor.rs:35:24
[INFO] [stdout]    |
[INFO] [stdout] 35 |         for handler in &self.handlers {
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: method should be `async` or return a future, but it is synchronous
[INFO] [stdout]   --> src/message_processor.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn handle(&self, message: WhatsAppMessage) -> Result<()> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: this method is `async` so it expects a future to be returned
[INFO] [stdout]   --> src/message_processor.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: method should be `async` or return a future, but it is synchronous
[INFO] [stdout]   --> src/message_processor.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn handle(&self, message: WhatsAppMessage) -> Result<()> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: this method is `async` so it expects a future to be returned
[INFO] [stdout]   --> src/message_processor.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/message_processor.rs:25:27
[INFO] [stdout]    |
[INFO] [stdout] 25 |         handlers: Vec<Box<dyn MessageHandler>>,
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type
[INFO] [stdout]    |
[INFO] [stdout] 25 -         handlers: Vec<Box<dyn MessageHandler>>,
[INFO] [stdout] 25 +         handlers: Vec<Box<Self>>,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/message_processor.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 |             handlers,
[INFO] [stdout]    |             ^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/message_processor.rs:25:27
[INFO] [stdout]    |
[INFO] [stdout] 25 |         handlers: Vec<Box<dyn MessageHandler>>,
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] help: you might have meant to use `Self` to refer to the implementing type
[INFO] [stdout]    |
[INFO] [stdout] 25 -         handlers: Vec<Box<dyn MessageHandler>>,
[INFO] [stdout] 25 +         handlers: Vec<Box<Self>>,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/message_processor.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 |             handlers,
[INFO] [stdout]    |             ^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/main.rs:29:31
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let handlers: Vec<Box<dyn MessageHandler>> = vec![
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/main.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         handlers,
[INFO] [stdout]    |         ^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/main.rs:29:31
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let handlers: Vec<Box<dyn MessageHandler>> = vec![
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `MessageHandler` is not dyn compatible
[INFO] [stdout]   --> src/main.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         handlers,
[INFO] [stdout]    |         ^^^^^^^^ `MessageHandler` is not dyn compatible
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be dyn compatible it needs to allow building a vtable
[INFO] [stdout]       for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility>
[INFO] [stdout]   --> src/message_processor.rs:7:14
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait MessageHandler: Send + Sync {
[INFO] [stdout]    |           -------------- this trait is not dyn compatible...
[INFO] [stdout]  7 |     async fn handle(self: &Self, message: WhatsAppMessage) -> Result<()>;
[INFO] [stdout]    |              ^^^^^^ ...because method `handle` is `async`
[INFO] [stdout]    = help: consider moving `handle` to another trait
[INFO] [stdout]    = help: the following types implement `MessageHandler`:
[INFO] [stdout]              message_processor::TextMessageHandler
[INFO] [stdout]              message_processor::ImageMessageHandler
[INFO] [stdout]            consider defining an enum where each variant holds one of these types,
[INFO] [stdout]            implementing `MessageHandler` for this new enum and using it instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `wa-bot` (bin "wa-bot") due to 8 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] For more information about this error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `wa-bot` (bin "wa-bot" test) due to 8 previous errors
[INFO] running `Command { std: "docker" "inspect" "4c186c50685c9936d4195afab7a84d57fc211b4a7755c231141d5726baa203f9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4c186c50685c9936d4195afab7a84d57fc211b4a7755c231141d5726baa203f9", kill_on_drop: false }`
[INFO] [stdout] 4c186c50685c9936d4195afab7a84d57fc211b4a7755c231141d5726baa203f9
